ADO nezvlada view 2

Otázka od: Delphin

18. 11. 2002 16:57

MS SQL2000, D5 SP2, ADO 2.7

Mam slozite view a zmeny resim v triggerech.
Kdyz chci po ADO provest ADODataSet.Post, tak ADO se pokousi vymyslet
vlastni metodu na aktualizaci a samozrejme to u slozitych view nezvladne a
skonci s chybou, navic je to pri reseni s triggery nezadouci.

Chci se zeptat, jak donutit ADO, aby nic nevymyslelo a normalne jednoduse
poslalo data na server ?

Diky Delphin

Odpovedá: Erik Salaj

18. 11. 2002 23:52

> Mam slozite view a zmeny resim v triggerech.
> Kdyz chci po ADO provest ADODataSet.Post, tak ADO se pokousi vymyslet
> vlastni metodu na aktualizaci a samozrejme to u slozitych view nezvladne a
> skonci s chybou, navic je to pri reseni s triggery nezadouci.
>
> Chci se zeptat, jak donutit ADO, aby nic nevymyslelo a normalne jednoduse
> poslalo data na server ?

najlepsie riesenie je priamo pouzivat SQL prikaz urceny na na aktualizaciu,
t.j.
UPDATE alebo vytvorit a pouzivat na aktulizaciu storovanu proceduru.

Erik

Odpovedá: Delphin

19. 11. 2002 11:36

> najlepsie riesenie je priamo pouzivat SQL prikaz urceny na na
aktualizaciu,
> t.j.
> UPDATE alebo vytvorit a pouzivat na aktulizaciu storovanu proceduru.

Pristupujeme do databaze z vice typu aplikaci a nefunguje to pouze s ADO, je
tedy evidentni, kde je problem.

Odpovedá: listbox@vakmb.cz

19. 11. 2002 12:20

View (jak nazev napovida) jsou urceny pro reprezentaci dat (hlavne odstineni
uzivatele od struktury DB).
Update dat na zaklade view neni doporucovan a u pohledu definovanych nad
nekolika tabulkami vpodstate nefunguje (urcitou moznosti je pouziti spouste
INSTEAD OF). ADO je rozhrani na nizssi urovni nez BDE (to vzdy rozlozi
prikaz na prime aktualizace jednotlivych tabulek) a tak vznikaji problemy.
Neco jde take vyresit pomoci UpdateCriteria,UniqueCatalog,UniqueSchema a
UniqueTable.
Pro zmeny dat pouzivejte ulozene procedury.

> MS SQL2000, D5 SP2, ADO 2.7
>
> Mam slozite view a zmeny resim v triggerech.
> Kdyz chci po ADO provest ADODataSet.Post, tak ADO se pokousi vymyslet
> vlastni metodu na aktualizaci a samozrejme to u slozitych
> view nezvladne a
> skonci s chybou, navic je to pri reseni s triggery nezadouci.
>
> Chci se zeptat, jak donutit ADO, aby nic nevymyslelo a
> normalne jednoduse
> poslalo data na server ?
>
> Diky Delphin
>
>

Odpovedá: bardon

19. 11. 2002 11:31

Dovolim si nesouhlasit. M$ doporucuje pouzivat View hlavne pro realizaci
pristupovych prav. Proto take M$ pomerne solidne podporuje updatovatelna
View. Prekvapuje me, ze si s tim ADO neporadi tak, jak bych ocekaval.

-----Original Message-----
From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]On
Behalf Of listbox@vakmb.cz

View (jak nazev napovida) jsou urceny pro reprezentaci dat (hlavne odstineni
uzivatele od struktury DB).


Odpovedá: Delphin

19. 11. 2002 15:10

> ADO je rozhrani na nizssi urovni nez BDE (to vzdy rozlozi
> prikaz na prime aktualizace jednotlivych tabulek) a tak vznikaji
problemy.

Me by stacilo, kdyby se to rozkladani dalo vypnout. Zadne problemy by pak
nevznikly.

Odpovedá: Jakub Martinek

19. 11. 2002 16:46

> Behalf Of bardon
>
> Dovolim si nesouhlasit. M$ doporucuje pouzivat View hlavne
> pro realizaci pristupovych prav.

Souhlas. Prave tim ,ze nepustite uzivatele primo do databaze.

> Proto take M$ pomerne solidne podporuje updatovatelna
> View. Prekvapuje me, ze si s tim ADO neporadi tak, jak bych ocekaval.
> Behalf Of listbox@vakmb.cz
Problemem updatovatelnych view jsou klice a vazby. Server proste nedokaze s
dostupnych informaci spravne urcit klice a odmitne takovy prikaz vykonat.
Spustenim view vykonate pouze predem sestaveny regulerni SQL prikaz a po
jeho uspesnem vykonani na nej server zapomene. K slozeni spravneho prikazu
pro update mate pouze jmena sloupcu a to vetsinou nestaci. ADO si sice
pamatuje zdrojove tabulky, ale musite mu pomoci prave s urcenim klicu (u
slozitych vazeb stejne narazite).
A prave kvuli nejednoznacne a otevrene implementaci view u MSSQL nejde urcit
nad kterym view jeste editace pujde. Proto se obecne doporucuje provadet
updaty jinym zpusobem.
BDE jsem videl naposledy ... a tak mozna kecam, ale pravdepodobne si projde
dane view a rozparsuje ho na prime updaty jednotlivych tabulek (ale klice
musi vycist primo z definice view).

>
>> View (jak nazev napovida) jsou urceny pro reprezentaci dat
>> (hlavne odstineni
>> uzivatele od struktury DB).

Odpovedá: Delphin

19. 11. 2002 17:24

> A prave kvuli nejednoznacne a otevrene implementaci view u MSSQL nejde
urcit
> nad kterym view jeste editace pujde. Proto se obecne doporucuje provadet
> updaty jinym zpusobem.

Neni treba provadet updaty jinym zpusobem, jde to s INSTEAD OF triggery.
Bohuzel ADO tuto moznost nebere na vedomi.

Odpovedá: Tom xXx

19. 11. 2002 17:43


>> A prave kvuli nejednoznacne a otevrene implementaci view u MSSQL nejde
> urcit
>> nad kterym view jeste editace pujde. Proto se obecne doporucuje
>> provadet updaty jinym zpusobem.
>
> Neni treba provadet updaty jinym zpusobem, jde to s INSTEAD OF triggery.
Bohuzel
> ADO tuto moznost nebere na vedomi.

Ja jsem na to teda nenarazil, protoze update dat delam pres ulozene procedury,
ale pise se o tom tady"
http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q304096
Takze teoreticky by dle toho clanku melo stacit tvorit view takto (pokud se jedna o SQL Server 2000):
create view vw_pokus
WITH VIEW_METADATA
as
  select * from pokus
Zdar Buh
 T.